# RUN: llvm-mc --disassemble %s -triple powerpc64le-unknown-unknown -mcpu=pwr7 | FileCheck %s

# FIXME: test b target

# FIXME: test ba target

# FIXME: test bl target

# FIXME: test bla target

# FIXME: test bc 4, 10, target

# FIXME: test bca 4, 10, target

# FIXME: test bcl 4, 10, target

# FIXME: test bcla 4, 10, target

# CHECK: bclr 4, 10, 3
0x20 0x18 0x8a 0x4c

# CHECK: bclr 4, 10
0x20 0x00 0x8a 0x4c

# CHECK: bclrl 4, 10, 3
0x21 0x18 0x8a 0x4c

# CHECK: bclrl 4, 10
0x21 0x00 0x8a 0x4c

# CHECK: bcctr 4, 10, 3
0x20 0x1c 0x8a 0x4c

# CHECK: bcctr 4, 10
0x20 0x04 0x8a 0x4c

# CHECK: bcctrl 4, 10, 3
0x21 0x1c 0x8a 0x4c

# CHECK: bcctrl 4, 10
0x21 0x04 0x8a 0x4c

# CHECK: crand 2, 3, 4
0x02 0x22 0x43 0x4c

# CHECK: crnand 2, 3, 4
0xc2 0x21 0x43 0x4c

# CHECK: cror 2, 3, 4
0x82 0x23 0x43 0x4c

# CHECK: crxor 2, 3, 4
0x82 0x21 0x43 0x4c

# CHECK: crnor 2, 3, 4
0x42 0x20 0x43 0x4c

# CHECK: creqv 2, 3, 4
0x42 0x22 0x43 0x4c

# CHECK: crandc 2, 3, 4
0x02 0x21 0x43 0x4c

# CHECK: crorc 2, 3, 4
0x42 0x23 0x43 0x4c

# CHECK: mcrf 2, 3
0x00 0x00 0x0c 0x4d

# CHECK: sc 1
0x22 0x00 0x00 0x44

# CHECK: sc
0x02 0x00 0x00 0x44

# CHECK: clrbhrb
0x5c 0x03 0x00 0x7c

# CHECK: mfbhrbe 9, 983
0x5c 0xba 0x3e 0x7d

# CHECK: rfebb
0x24 0x09 0x00 0x4c

# CHECK: lbz 2, 128(4)
0x80 0x00 0x44 0x88

# CHECK: lbzx 2, 3, 4
0xae 0x20 0x43 0x7c

# CHECK: lbzu 2, 128(4)
0x80 0x00 0x44 0x8c

# CHECK: lbzux 2, 3, 4
0xee 0x20 0x43 0x7c

# CHECK: lhz 2, 128(4)
0x80 0x00 0x44 0xa0

# CHECK: lhzx 2, 3, 4
0x2e 0x22 0x43 0x7c

# CHECK: lhzu 2, 128(4)
0x80 0x00 0x44 0xa4

# CHECK: lhzux 2, 3, 4
0x6e 0x22 0x43 0x7c

# CHECK: lha 2, 128(4)
0x80 0x00 0x44 0xa8

# CHECK: lhax 2, 3, 4
0xae 0x22 0x43 0x7c

# CHECK: lhau 2, 128(4)
0x80 0x00 0x44 0xac

# CHECK: lhaux 2, 3, 4
0xee 0x22 0x43 0x7c

# CHECK: lwz 2, 128(4)
0x80 0x00 0x44 0x80

# CHECK: lwzx 2, 3, 4
0x2e 0x20 0x43 0x7c

# CHECK: lwzu 2, 128(4)
0x80 0x00 0x44 0x84

# CHECK: lwzux 2, 3, 4
0x6e 0x20 0x43 0x7c

# CHECK: lwa 2, 128(4)
0x82 0x00 0x44 0xe8

# CHECK: lwax 2, 3, 4
0xaa 0x22 0x43 0x7c

# CHECK: lwaux 2, 3, 4
0xea 0x22 0x43 0x7c

# CHECK: ld 2, 128(4)
0x80 0x00 0x44 0xe8

# CHECK: ldx 2, 3, 4
0x2a 0x20 0x43 0x7c

# CHECK: ldu 2, 128(4)
0x81 0x00 0x44 0xe8

# CHECK: ldux 2, 3, 4
0x6a 0x20 0x43 0x7c

# CHECK: stb 2, 128(4)
0x80 0x00 0x44 0x98

# CHECK: stbx 2, 3, 4
0xae 0x21 0x43 0x7c

# CHECK: stbu 2, 128(4)
0x80 0x00 0x44 0x9c

# CHECK: stbux 2, 3, 4
0xee 0x21 0x43 0x7c

# CHECK: sth 2, 128(4)
0x80 0x00 0x44 0xb0

# CHECK: sthx 2, 3, 4
0x2e 0x23 0x43 0x7c

# CHECK: sthu 2, 128(4)
0x80 0x00 0x44 0xb4

# CHECK: sthux 2, 3, 4
0x6e 0x23 0x43 0x7c

# CHECK: stw 2, 128(4)
0x80 0x00 0x44 0x90

# CHECK: stwx 2, 3, 4
0x2e 0x21 0x43 0x7c

# CHECK: stwu 2, 128(4)
0x80 0x00 0x44 0x94

# CHECK: stwux 2, 3, 4
0x6e 0x21 0x43 0x7c

# CHECK: std 2, 128(4)
0x80 0x00 0x44 0xf8

# CHECK: stdx 2, 3, 4
0x2a 0x21 0x43 0x7c

# CHECK: stdu 2, 128(4)
0x81 0x00 0x44 0xf8

# CHECK: stdux 2, 3, 4
0x6a 0x21 0x43 0x7c

# CHECK: lhbrx 2, 3, 4
0x2c 0x26 0x43 0x7c

# CHECK: sthbrx 2, 3, 4
0x2c 0x27 0x43 0x7c

# CHECK: lwbrx 2, 3, 4
0x2c 0x24 0x43 0x7c

# CHECK: stwbrx 2, 3, 4
0x2c 0x25 0x43 0x7c

# CHECK: ldbrx 2, 3, 4
0x28 0x24 0x43 0x7c

# CHECK: stdbrx 2, 3, 4
0x28 0x25 0x43 0x7c

# CHECK: lmw 2, 128(1)
0x80 0x00 0x41 0xb8

# CHECK: stmw 2, 128(1)
0x80 0x00 0x41 0xbc

# CHECK: addi 2, 3, 128
0x80 0x00 0x43 0x38

# CHECK: addis 2, 3, 128
0x80 0x00 0x43 0x3c

# CHECK: add 2, 3, 4
0x14 0x22 0x43 0x7c

# CHECK: add. 2, 3, 4
0x15 0x22 0x43 0x7c

# CHECK: addo 2, 3, 4
0x14 0x26 0x43 0x7c

# CHECK: addo. 2, 3, 4
0x15 0x26 0x43 0x7c

# CHECK: sub 2, 4, 3
0x50 0x20 0x43 0x7c

# CHECK: sub. 2, 4, 3
0x51 0x20 0x43 0x7c

# CHECK: subfo 2, 3, 4
0x50 0x24 0x43 0x7c

# CHECK: subfo. 2, 3, 4
0x51 0x24 0x43 0x7c

# CHECK: addic 2, 3, 128
0x80 0x00 0x43 0x30

# CHECK: addic. 2, 3, 128
0x80 0x00 0x43 0x34

# CHECK: subfic 2, 3, 4
0x04 0x00 0x43 0x20

# CHECK: addc 2, 3, 4
0x14 0x20 0x43 0x7c

# CHECK: addc. 2, 3, 4
0x15 0x20 0x43 0x7c

# CHECK: addco 2, 3, 4
0x14 0x24 0x43 0x7c

# CHECK: addco. 2, 3, 4
0x15 0x24 0x43 0x7c

# CHECK: subc 2, 4, 3
0x10 0x20 0x43 0x7c

# CHECK: subc. 2, 4, 3
0x11 0x20 0x43 0x7c

# CHECK: subfco 2, 3, 4
0x10 0x24 0x43 0x7c

# CHECK: subfco. 2, 3, 4
0x11 0x24 0x43 0x7c

# CHECK: adde 2, 3, 4
0x14 0x21 0x43 0x7c

# CHECK: adde. 2, 3, 4
0x15 0x21 0x43 0x7c

# CHECK: addeo 2, 3, 4
0x14 0x25 0x43 0x7c

# CHECK: addeo. 2, 3, 4
0x15 0x25 0x43 0x7c

# CHECK: subfe 2, 3, 4
0x10 0x21 0x43 0x7c

# CHECK: subfe. 2, 3, 4
0x11 0x21 0x43 0x7c

# CHECK: subfeo 2, 3, 4
0x10 0x25 0x43 0x7c

# CHECKE: subfeo. 2, 3, 4
0x11 0x25 0x43 0x7c

# CHECK: addme 2, 3
0xd4 0x01 0x43 0x7c

# CHECK: addme. 2, 3
0xd5 0x01 0x43 0x7c

# CHECK: addmeo 2, 3
0xd4 0x05 0x43 0x7c

# CHECK: addmeo. 2, 3
0xd5 0x05 0x43 0x7c

# CHECK: subfme 2, 3
0xd0 0x01 0x43 0x7c

# CHECK: subfme. 2, 3
0xd1 0x01 0x43 0x7c

# CHECK: subfmeo 2, 3
0xd0 0x05 0x43 0x7c

# CHECK: subfmeo. 2, 3
0xd1 0x05 0x43 0x7c

# CHECK: addze 2, 3
0x94 0x01 0x43 0x7c

# CHECK: addze. 2, 3
0x95 0x01 0x43 0x7c

# CHECK: addzeo 2, 3
0x94 0x05 0x43 0x7c

# CHECK: addzeo. 2, 3
0x95 0x05 0x43 0x7c

# CHECK: subfze 2, 3
0x90 0x01 0x43 0x7c

# CHECK: subfze. 2, 3
0x91 0x01 0x43 0x7c

# CHECK: subfzeo 2, 3
0x90 0x05 0x43 0x7c

# CHECK: subfzeo. 2, 3
0x91 0x05 0x43 0x7c

# CHECK: neg 2, 3
0xd0 0x00 0x43 0x7c

# CHECK: neg. 2, 3
0xd1 0x00 0x43 0x7c

# CHECK: nego 2, 3
0xd0 0x04 0x43 0x7c

# CHECK: nego. 2, 3
0xd1 0x04 0x43 0x7c

# CHECK: mulli 2, 3, 128
0x80 0x00 0x43 0x1c

# CHECK: mulhw 2, 3, 4
0x96 0x20 0x43 0x7c

# CHECK: mulhw. 2, 3, 4
0x97 0x20 0x43 0x7c

# CHECK: mullw 2, 3, 4
0xd6 0x21 0x43 0x7c

# CHECK: mullw. 2, 3, 4
0xd7 0x21 0x43 0x7c

# CHECK: mullwo 2, 3, 4
0xd6 0x25 0x43 0x7c

# CHECK: mullwo. 2, 3, 4
0xd7 0x25 0x43 0x7c

# CHECK: mulhwu 2, 3, 4
0x16 0x20 0x43 0x7c

# CHECK: mulhwu. 2, 3, 4
0x17 0x20 0x43 0x7c

# CHECK: divw 2, 3, 4
0xd6 0x23 0x43 0x7c

# CHECK: divw. 2, 3, 4
0xd7 0x23 0x43 0x7c

# CHECK: divwo 2, 3, 4
0xd6 0x27 0x43 0x7c

# CHECK: divwo. 2, 3, 4
0xd7 0x27 0x43 0x7c

# CHECK: divwu 2, 3, 4
0x96 0x23 0x43 0x7c

# CHECK: divwu. 2, 3, 4
0x97 0x23 0x43 0x7c

# CHECK: divwuo 2, 3, 4
0x96 0x27 0x43 0x7c

# CHECK: divwuo. 2, 3, 4
0x97 0x27 0x43 0x7c

# CHECK: divwe 2, 3, 4
0x56 0x23 0x43 0x7c

# CHECK: divwe. 2, 3, 4
0x57 0x23 0x43 0x7c

# CHECK: divweo 2, 3, 4
0x56 0x27 0x43 0x7c

# CHECK: divweo. 2, 3, 4
0x57 0x27 0x43 0x7c

# CHECK: divweu 2, 3, 4
0x16 0x23 0x43 0x7c

# CHECK: divweu. 2, 3, 4
0x17 0x23 0x43 0x7c

# CHECK: divweuo 2, 3, 4
0x16 0x27 0x43 0x7c

# CHECK: divweuo. 2, 3, 4
0x17 0x27 0x43 0x7c

# CHECK: modsw 2, 3, 4
0x16 0x26 0x43 0x7c

# CHECK: addex 2, 4, 5, 0
0x54 0x29 0x44 0x7C

# CHECK: moduw 2, 3, 4
0x16 0x22 0x43 0x7c

# CHECK: modsd 2, 3, 4
0x12 0x26 0x43 0x7c

# CHECK: modud 2, 3, 4
0x12 0x22 0x43 0x7c

# CHECK: mulld 2, 3, 4
0xd2 0x21 0x43 0x7c

# CHECK: mulld. 2, 3, 4
0xd3 0x21 0x43 0x7c

# CHECK: mulldo 2, 3, 4
0xd2 0x25 0x43 0x7c

# CHECK: mulldo. 2, 3, 4
0xd3 0x25 0x43 0x7c

# CHECK: mulhd 2, 3, 4
0x92 0x20 0x43 0x7c

# CHECK: mulhd. 2, 3, 4
0x93 0x20 0x43 0x7c

# CHECK: mulhdu 2, 3, 4
0x12 0x20 0x43 0x7c

# CHECK: mulhdu. 2, 3, 4
0x13 0x20 0x43 0x7c

# CHECK: divd 2, 3, 4
0xd2 0x23 0x43 0x7c

# CHECK: divd. 2, 3, 4
0xd3 0x23 0x43 0x7c

# CHECK: divdo 2, 3, 4
0xd2 0x27 0x43 0x7c

# CHECK: divdo. 2, 3, 4
0xd3 0x27 0x43 0x7c

# CHECK: divdu 2, 3, 4
0x92 0x23 0x43 0x7c

# CHECK: divdu. 2, 3, 4
0x93 0x23 0x43 0x7c

# CHECK: divduo 2, 3, 4
0x92 0x27 0x43 0x7c

# CHECK: divduo. 2, 3, 4
0x93 0x27 0x43 0x7c

# CHECK: divde 2, 3, 4
0x52 0x23 0x43 0x7c

# CHECK: divde. 2, 3, 4
0x53 0x23 0x43 0x7c

# CHECK: divdeo 2, 3, 4
0x52 0x27 0x43 0x7c

# CHECK: divdeo. 2, 3, 4
0x53 0x27 0x43 0x7c

# CHECK: divdeu 2, 3, 4
0x12 0x23 0x43 0x7c

# CHECK: divdeu. 2, 3, 4
0x13 0x23 0x43 0x7c

# CHECK: divdeuo 2, 3, 4
0x12 0x27 0x43 0x7c

# CHECK: divdeuo. 2, 3, 4
0x13 0x27 0x43 0x7c

# CHECK: cmpdi 2, 3, 128
0x80 0x00 0x23 0x2d

# CHECK: cmpd 2, 3, 4
0x00 0x20 0x23 0x7d

# CHECK: cmpldi 2, 3, 128
0x80 0x00 0x23 0x29

# CHECK: cmpld 2, 3, 4
0x40 0x20 0x23 0x7d

# CHECK: cmpwi 2, 3, 128
0x80 0x00 0x03 0x2d

# CHECK: cmpw 2, 3, 4
0x00 0x20 0x03 0x7d

# CHECK: cmplwi 2, 3, 128
0x80 0x00 0x03 0x29

# CHECK: cmplw 2, 3, 4
0x40 0x20 0x03 0x7d

# CHECK: twllti 3, 4
0x04 0x00 0x43 0x0c

# CHECK: twllt 3, 4
0x08 0x20 0x43 0x7c

# CHECK: tdllti 3, 4
0x04 0x00 0x43 0x08

# CHECK: tdllt 3, 4
0x88 0x20 0x43 0x7c

# CHECK: isel 2, 3, 4, 5
0x5e 0x21 0x43 0x7c

# CHECK: andi. 2, 3, 128
0x80 0x00 0x62 0x70

# CHECK: andis. 2, 3, 128
0x80 0x00 0x62 0x74

# CHECK: ori 2, 3, 128
0x80 0x00 0x62 0x60

# CHECK: oris 2, 3, 128
0x80 0x00 0x62 0x64

# CHECK: xori 2, 3, 128
0x80 0x00 0x62 0x68

# CHECK: xoris 2, 3, 128
0x80 0x00 0x62 0x6c

# CHECK: and 2, 3, 4
0x38 0x20 0x62 0x7c

# CHECK: and. 2, 3, 4
0x39 0x20 0x62 0x7c

# CHECK: xor 2, 3, 4
0x78 0x22 0x62 0x7c

# CHECK: xor. 2, 3, 4
0x79 0x22 0x62 0x7c

# CHECK: nand 2, 3, 4
0xb8 0x23 0x62 0x7c

# CHECK: nand. 2, 3, 4
0xb9 0x23 0x62 0x7c

# CHECK: or 2, 3, 4
0x78 0x23 0x62 0x7c

# CHECK: or. 2, 3, 4
0x79 0x23 0x62 0x7c

# CHECK: nor 2, 3, 4
0xf8 0x20 0x62 0x7c

# CHECK: nor. 2, 3, 4
0xf9 0x20 0x62 0x7c

# CHECK: eqv 2, 3, 4
0x38 0x22 0x62 0x7c

# CHECK: eqv. 2, 3, 4
0x39 0x22 0x62 0x7c

# CHECK: andc 2, 3, 4
0x78 0x20 0x62 0x7c

# CHECK: andc. 2, 3, 4
0x79 0x20 0x62 0x7c

# CHECK: orc 2, 3, 4
0x38 0x23 0x62 0x7c

# CHECK: orc. 2, 3, 4
0x39 0x23 0x62 0x7c

# CHECK: extsb 2, 3
0x74 0x07 0x62 0x7c

# CHECK: extsb. 2, 3
0x75 0x07 0x62 0x7c

# CHECK: extsh 2, 3
0x34 0x07 0x62 0x7c

# CHECK: extsh. 2, 3
0x35 0x07 0x62 0x7c

# CHECK: cntlzw 2, 3
0x34 0x00 0x62 0x7c

# CHECK: cntlzw. 2, 3
0x35 0x00 0x62 0x7c

# CHECK: popcntw 2, 3
0xf4 0x02 0x62 0x7c

# CHECK: extsw 2, 3
0xb4 0x07 0x62 0x7c

# CHECK: extsw. 2, 3
0xb5 0x07 0x62 0x7c

# CHECK: cntlzd 2, 3
0x74 0x00 0x62 0x7c

# CHECK: cntlzd. 2, 3
0x75 0x00 0x62 0x7c

# CHECK: popcntd 2, 3
0xf4 0x03 0x62 0x7c

# CHECK: bpermd 2, 3, 4
0xf8 0x21 0x62 0x7c

# CHECK: cmpb 7, 21, 4
0xf8 0x23 0xa7 0x7e

# CHECK: rlwinm 2, 3, 4, 5, 6
0x4c 0x21 0x62 0x54

# CHECK: rlwinm. 2, 3, 4, 5, 6
0x4d 0x21 0x62 0x54

# CHECK: rlwnm 2, 3, 4, 5, 6
0x4c 0x21 0x62 0x5c

# CHECK: rlwnm. 2, 3, 4, 5, 6
0x4d 0x21 0x62 0x5c

# CHECK: rlwimi 2, 3, 4, 5, 6
0x4c 0x21 0x62 0x50

# CHECK: rlwimi. 2, 3, 4, 5, 6
0x4d 0x21 0x62 0x50

# CHECK: rldicl 2, 3, 4, 5
0x40 0x21 0x62 0x78

# CHECK: rldicl. 2, 3, 4, 5
0x41 0x21 0x62 0x78

# CHECK: rldicr 2, 3, 4, 5
0x44 0x21 0x62 0x78

# CHECK: rldicr. 2, 3, 4, 5
0x45 0x21 0x62 0x78

# CHECK: rldic 2, 3, 4, 5
0x48 0x21 0x62 0x78

# CHECK: rldic. 2, 3, 4, 5
0x49 0x21 0x62 0x78

# CHECK: rldcl 2, 3, 4, 5
0x50 0x21 0x62 0x78

# CHECK: rldcl. 2, 3, 4, 5
0x51 0x21 0x62 0x78

# CHECK: rldcr 2, 3, 4, 5
0x52 0x21 0x62 0x78

# CHECK: rldcr. 2, 3, 4, 5
0x53 0x21 0x62 0x78

# CHECK: rldimi 2, 3, 4, 5
0x4c 0x21 0x62 0x78

# CHECK: rldimi. 2, 3, 4, 5
0x4d 0x21 0x62 0x78

# CHECK: slw 2, 3, 4
0x30 0x20 0x62 0x7c

# CHECK: slw. 2, 3, 4
0x31 0x20 0x62 0x7c

# CHECK: srw 2, 3, 4
0x30 0x24 0x62 0x7c

# CHECK: srw. 2, 3, 4
0x31 0x24 0x62 0x7c

# CHECK: srawi 2, 3, 4
0x70 0x26 0x62 0x7c

# CHECK: srawi. 2, 3, 4
0x71 0x26 0x62 0x7c

# CHECK: sraw 2, 3, 4
0x30 0x26 0x62 0x7c

# CHECK: sraw. 2, 3, 4
0x31 0x26 0x62 0x7c

# CHECK: sld 2, 3, 4
0x36 0x20 0x62 0x7c

# CHECK: sld. 2, 3, 4
0x37 0x20 0x62 0x7c

# CHECK: srd 2, 3, 4
0x36 0x24 0x62 0x7c

# CHECK: srd. 2, 3, 4
0x37 0x24 0x62 0x7c

# CHECK: sradi 2, 3, 4
0x74 0x26 0x62 0x7c

# CHECK: sradi. 2, 3, 4
0x75 0x26 0x62 0x7c

# CHECK: srad 2, 3, 4
0x34 0x26 0x62 0x7c

# CHECK: srad. 2, 3, 4
0x35 0x26 0x62 0x7c

# CHECK: mtspr 600, 2
0xa6 0x93 0x58 0x7c

# CHECK: mfspr 2, 600
0xa6 0x92 0x58 0x7c

# CHECK: mtcrf 123, 2
0x20 0xb1 0x47 0x7c

# CHECK: mfcr 2
0x26 0x00 0x40 0x7c

# CHECK: mtocrf 16, 2
0x20 0x01 0x51 0x7c

# CHECK: mfocrf 16, 8
0x26 0x80 0x10 0x7e

# CHECK: mtsrin 10, 12
0xe4 0x61 0x40 0x7d
# CHECK: mfsrin 10, 12
0x26 0x65 0x40 0x7d
